//#include "facade.h"
//
//#include <iostream>
//#include "citygml.h"
//
//#include "tinyxml2.h"
//#include "MasterXMLPrinterClass.h"
//
//using namespace cv;
//using namespace std;
//
//int doit();
//
//int main(int argc,char** argv)
//{
//
//	/***************
//	Facade f;
//
//		//vector<double> d1,d2;
//		//d1.push_back(0.5);
//		//d1.push_back(1.0);
//		//d1.push_back(1.5);
//		//d1.push_back(2);
//		//d2.push_back(0.7);
//		//d2.push_back(2.0);
//		//d2.push_back(4.0);
//
//
//		//f.createCells(d1,d2);
//
//	
//
//	
//		f.loadPointCloud(argv[1]);
//	f.doStuff();
//
//	citygml::ParserParams params;
//
//	citygml::CityModel *city = citygml::load( argv[1], params );
//
//	//	Cell* c = f.getCell(0,0);
//	//std::cout<<c->pos<<std::endl<<"--"<<std::endl<<c->size<<std::endl;
//	//getchar();
//	//		c = f.getCell(1,0);
//	//std::cout<<c->pos<<std::endl<<"--"<<std::endl<<c->size<<std::endl;
//	getchar();
//	********************/
//
//	doit();
//
//	return 0;
//}
//
//
//
//int doit()
//{
//	cout << "--- start setup ---" << endl;
//
//	//points counterclockwise
//	
//	vector<vector<float>> v1(6, vector<float>(3));
//	float v1a[6][3] = {{0, 0, 0}, {20, 0, 0}, {20, 20, 0}, {10, 20, 0}, {10, 10, 0}, {0, 10, 0}};
//	for (int i = 0; i < 6; i++)
//	{
//		v1[i].assign(v1a[i], v1a[i]+3);
//	}
//
//	vector<vector<float>> v4(3, vector<float>(3));
//	float v4a[6][3] = {{10,20, 0}, {20, 20, 0}, {20, 25, 0}};
//	for (int i = 0; i < 3; i++)
//	{
//		v4[i].assign(v4a[i], v4a[i]+3);
//	}
//
//
//	vector<vector<float>> v2(4, vector<float>(3));
//	float v2a[4][3] = {{1,1,0}, {5, 1, 0,}, {5, 5, 0}, {1, 5, 0}};
//	for (int i = 0; i < 4; i++)
//	{
//		v2[i].assign(v2a[i], v2a[i]+3);
//	}
//
//	vector<vector<float>> v3(4, vector<float>(3));
//	float v3a[4][3] = {{6,0.1,0}, {9, 0.1, 0}, {9, 5, 0}, {6, 5, 0}};
//	for (int i = 0; i < 4; i++)
//	{
//		v3[i].assign(v3a[i], v3a[i]+3);
//	}
//
//	/*
//	//some random vectors
//	vector<vector<float>> v;
//
//	for ( int i = 0; i < 4; i++ ) {
//	v.push_back ( std::vector<float>() );
//
//	for ( int j = 0; j < 3; j++ )
//		v[i].push_back ( i%(j+1) );
//	}
//
//
//	vector<vector<float>>::iterator row_it = v.begin();
//	vector<vector<float>>::iterator row_end = v.end();
//
//	for ( ; row_it != row_end; ++row_it ) 
//	{
//		vector<float>::iterator col_it = row_it->begin();
//		vector<float>::iterator col_end = row_it->end();
//
//		for ( ; col_it != col_end; ++col_it )
//		{
//			std::cout<< std::setw ( 3 ) << *col_it;
//		}
//		std::cout<<'\n';
//	}
//	*/
//
//	//Envelope
//	float lowercorner[3] = {0.0 , 0.0, 0.0};
//	float uppercorner[3] = {15.3 , 15.6, 15.9};
//
//	cout << "--- end setup ---" << endl;
//
//	cout << "--- start main ---" << endl;
//
//
//	MasterXMLPrinterClass theMasterPrinter = MasterXMLPrinterClass();
//
//	theMasterPrinter.printCityOPEN("city Name");
//
//	theMasterPrinter.printBoundingEnvelope(lowercorner, uppercorner);
//
//	theMasterPrinter.printCityObjectMemberOPEN("buildingID", "building name", "building description", 12.0, 2, 1);
//	theMasterPrinter.printWallSurfaceOPEN("wall name", "wall description");
//	theMasterPrinter.printLOD3MultiSurfaceOPEN();
//	theMasterPrinter.printCompositeSurfaceOPEN();
//	theMasterPrinter.printSurfaceMemberOPEN();
//	theMasterPrinter.printRing(&v1 ,true);
//	theMasterPrinter.printRing(&v2 ,false);
//	theMasterPrinter.printRing(&v3 ,false);
//	theMasterPrinter.printSurfaceMemberCLOSE();
//	theMasterPrinter.printSurfaceMemberOPEN();
//	theMasterPrinter.printRing(&v4 ,true);
//	theMasterPrinter.printSurfaceMemberCLOSE();
//	theMasterPrinter.printCompositeSurfaceCLOSE();
//	theMasterPrinter.printLOD3MultiSurfaceCLOSE();
//
//	theMasterPrinter.printOpeningOPEN("opening1 name", true);
//	theMasterPrinter.printLOD3MultiSurfaceOPEN();
//	theMasterPrinter.printSurfaceMemberOPEN();
//	theMasterPrinter.printRing(&v2 ,true);
//	theMasterPrinter.printSurfaceMemberCLOSE();
//	theMasterPrinter.printLOD3MultiSurfaceCLOSE();
//	theMasterPrinter.printOpeningCLOSE();
//
//	theMasterPrinter.printOpeningOPEN("opening2 name", false);
//	theMasterPrinter.printLOD3MultiSurfaceOPEN();
//	theMasterPrinter.printSurfaceMemberOPEN();
//	theMasterPrinter.printRing(&v3 ,true);
//	theMasterPrinter.printSurfaceMemberCLOSE();
//	theMasterPrinter.printLOD3MultiSurfaceCLOSE();
//	theMasterPrinter.printOpeningCLOSE();
//	
//	theMasterPrinter.printWallSurfaceCLOSE();
//	theMasterPrinter.printCityObjectMemberCLOSE();
//
//	theMasterPrinter.printCityCLOSE();
//
//	theMasterPrinter.printIt();
//
//	cout << "--- end main ---" << endl;
//	cout << "done..." << endl;
//
//	char waitAfterEnd;
//	//cin >> waitAfterEnd;
//	return 0;
//}